package main

import "fmt"

//当数据类型比较复杂时，可以设置为多个结构体，嵌套使用。
//嵌套结构体可以理解为结构体内再定义一个结构体。

type Phone struct {
	Brand string
	Price int
}

type People struct {
	Name   string
	Age    int
	Mobile Phone //嵌套结构体
}

type Student struct {
	Name string
	Age  int
}
type Hobby struct {
	Hobby1 string
	Hobby2 string
}
type Info struct {
	Student
	Hobby
}

func main() {
	var p People
	p.Name = "张三"
	p.Age = 20
	p.Mobile = Phone{"华为", 1000}
	fmt.Println(p)
	m := Phone{"小米15Utral", 10000}
	p2 := People{"李四", 20, m}
	fmt.Printf("用户：%s,使用的手机是：%s，价格是%d\n", p2.Name, p2.Mobile.Brand, p2.Mobile.Price)
	//{张三 20 {华为 1000}}
	//用户：李四,使用的手机是：小米15Utral，价格是10000
	var i Info
	i.Name = "小明"
	i.Age = 18
	i.Hobby1 = "篮球"
	i.Hobby2 = "足球"
	fmt.Println(i)
	//如果成员变量有相同的名字，
	// 则在外部访问时，只能使用结构体名.成员变量名的方式访问。

}
